extends 技能基类
class_name 移动技能

var 移动路径: Array[Vector2]	
var 移动速度: float = 200
var 最大可移动格数: int = 3

var 开始网格:Vector2i


func 获取技能范围(起点:Vector2i = 角色.当前网格坐标) -> Array[Vector2i]:
	
	var arr = 网格管理器.获取范围网格集合(角色.当前网格坐标, 最大可移动格数)
	var results:Array[Vector2i] = []
	for b in arr:
		var path = 网格管理器.获取导航网格路径(起点, b)
		var len = 网格管理器.获取网格路径长度(path)
		if len <= 最大可移动格数 and len>0 and 网格管理器.是否可行走网格(b):
			results.append(b)
	
	return results

func 开始(目标网格:Vector2i, 技能结束回调: Callable)	:
	super.开始(目标网格, 技能结束回调)
	
	self.开始网格 = 角色.当前网格坐标
	
	移动路径 = 网格管理器.获取导航世界路径(开始网格, 目标网格)
	
	
	
	角色.播放动画("run")
	
func _process(delta: float) -> void:
	if not 是否进行中:
		return
	
	if 移动路径 and !移动路径.is_empty():
		角色.移动(移动路径[0], delta)
		if 角色.global_position == 移动路径[0]:
			移动路径.remove_at(0)
	
	else:
		结束()
		角色.播放动画("idle")
		
		网格管理器.设置网格可行走(开始网格, true)
		网格管理器.设置网格占用角色(开始网格, null)
		
		网格管理器.设置网格可行走(目标网格, false)
		网格管理器.设置网格占用角色(目标网格, 角色)
		
		
		
